﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<assert.h>
//#define NODEBUG
//int main()
//{
//	int n = 0x11223344;
//	int* pi = &n;
//	*pi = 0;
//	printf("%d", sizeof(int));
//	return 0;
//}

//int main()
//{
//	int n = 0x11223344;
//	char* pc = (char*)&n;
//	*pc = 0;
//	printf("%x", n);
//	return 0;
//}

//int main()
//{
//	int n = 10;
//	char* pc = (char*)&n;
//	int* pi = &n;
//
//	printf("n        %p\n", &n);
//	printf("pc       %p\n", pc);
//	printf("pc + 1   %p\n", pc + 1);
//	printf("pi       %p\n", pi);
//	printf("pi + 1   %p\n", pi + 1);
//	return 0;
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	while (p < arr + sz) //指针的⼤⼩⽐较
//	{
//		printf("%d ", *p);
//		p++;
//	}
//	return 0;
//}
//int* test()
//{
//	int n = 100;
//	return &n;
//}
//int main()
//{
//	int* p = test();//变量n所申请的空间在出函数时就已经被释放
//	printf("%d\n", *p);
//	return 0;
//}
//int main()
//{
//	int arr[10] = { 0 };
//	int* p = &arr[0];
//	int i = 0;
//	for (i = 0; i <= 11; i++)
//	{
//		//当指针指向的范围超出数组arr的范围时，p就是野指针
//		*(p++) = i;
//	}
//	return 0;
//}

//int main()
//{
//	int* p = NULL;
//	assert(p != NULL);
//	return 0;
//}

//int my_strlen(char* s)//模拟strlen函数
//{
//	char* p = s;
//	while (*p != '\0')
//		p++;
//	return p - s;//指针-指针，结果为两个指针之间的元素的个数
//}
//int main()
//{
//	printf("%d\n", my_strlen("abc"));
//	return 0;
//}
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(p + i));//p+i 这⾥就是指针+整数
//	}
//	return 0;
//}

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int* p = &arr[0];
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	while (p < arr + sz) //指针的⼤⼩⽐较，当p到达数组最后一个元素时停止循环
	{
		printf("%d ", *p);
		p++;
	}
	return 0;
}
